package training04;

import java.text.DecimalFormat;
import java.time.DayOfWeek;
import java.time.LocalDate;

public class TrainingTest {

    /**
     * 驼峰转蛇形命名
     *
     * @param camel
     * @return
     */
    public String camelToSnake(String camel) {
        String snake = "";
        for (int i = 0; i < camel.length(); i++) {
            if (i > 0 && camel.charAt(i) >= 'A' && camel.charAt(i) <= 'Z') {
                snake += "_";
            }
            snake += camel.charAt(i);
        }
        return snake.toLowerCase();
    }

    /**
     * 蛇形转驼峰命名
     *
     * @param snake
     * @return
     */
    public String snakeToCamel(String snake) {
        String camel = "";
        String[] strs = snake.split("_");
        for (int i = 0; i < strs.length; i++) {
            camel += strs[i].substring(0, 1).toUpperCase()
                    + strs[i].substring(1);
        }
        return camel;
    }

    /**
     * 编写一个方法，将货币数字以千分位的方式表示。
     * 例子：
     * formatCurrency(1234567.03) # 转换后的结果：1,234,567.03
     *
     * @param args
     */
    public String formatCurrency(double number) {
        DecimalFormat format = new DecimalFormat(",###.##");
        return format.format(number);
    }

    /**
     * 编写一个方法，接收一个日期字符串，然后输出该日期所属的星期和该星期的开始日期和结束日期，比如：
     * 输入2023-05-11，输出这天是星期4，这周的星期1是5月8日，星期日是5月14日
     *
     * @param args
     */
    public void printDate(String dateStr) {
        LocalDate date = LocalDate.parse(dateStr);
        System.out.println("这天是星期" + date.getDayOfWeek().getValue());
        System.out.println("这周星期一的日期是：" + date.with(DayOfWeek.MONDAY));
        System.out.println("这周星期天的日期是：" + date.with(DayOfWeek.SUNDAY));
    }

    public static void main(String[] args) {
        TrainingTest training = new TrainingTest();
//        System.out.println(training.camelToSnake("MyFirstName"));
//        System.out.println(training.snakeToCamel("my_first_name"));
//        System.out.println(training.formatCurrency(1234567.91823));
//        training.printDate("2023-05-31");
    }


}
